//
//  AppDelegate.swift
//  zyqWeibo
//
//  Created by 张亚琼 on 15/6/23.
//  Copyright © 2015年 张亚琼. All rights reserved.
//

import UIKit
import AFNetworking
// 全局变量获取用户账号信息
var sharedUserAccount = UserAccount.loadAccount()
// 切换根控制器的通知
let YQSwitchRootVCNotification = "YQSwitchRootVCNotification"
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    // 程序入口，首先加载TabBarController
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
//        window?.backgroundColor = UIColor.redColor()
        window?.backgroundColor = UIColor(white: 0.93, alpha: 1.0)
        window?.rootViewController = defaultViewController()
        
        window?.makeKeyAndVisible()
        
        // 设置外观
        UITabBar.appearance().tintColor = UIColor.orangeColor()
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
        
        setupNetWork()
        
        // 注册通知，
        // 注意：selector是有参数的方法，要写冒号
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "switchRootVCNotification:", name: YQSwitchRootVCNotification, object: nil)
        return true
    }
    
    // 判断哪个是默认的控制器
    private func defaultViewController() -> UIViewController {
        // 判断用户是否登录，没有登录直接跳到登录控制器
        if sharedUserAccount != nil {
            return isNewUpdate() ? NewFeatureController() : WelcomeViewController()
        }
        return MainTabBarController()
    }
    // 销毁时会调用这个方法
    deinit{
        // 在这里写注销通知的代码，也可以不写，因为AppDelegate是随着程序的启动而生成，程序的终止
        NSNotificationCenter.defaultCenter().removeObserver(self, name: YQSwitchRootVCNotification, object: nil)
        
    }
    
    // 是否新版本
    private func isNewUpdate() -> Bool {
        // 获取应用程序当前版本号
        let currentVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String
        // 转换成浮点型用于比较大小
        let version = NSNumberFormatter().numberFromString(currentVersion)!.doubleValue
        print("当前版本\(version)")
        
        // 从偏好设置中获取应用程序之前的版本号
        let versionKey = "versionKey"
        let sandBoxVersion = NSUserDefaults.standardUserDefaults().doubleForKey(versionKey)
        print("之前版本\(sandBoxVersion)")
        
        // 将当前版本写入偏好设置
        NSUserDefaults.standardUserDefaults().setDouble(version, forKey: versionKey)
        return version > sandBoxVersion
    }
    
    // 收到通知会调用该方法
    // 注意：该方法不能写成private
    func switchRootVCNotification(n:NSNotification) {
        // 根据通知中的object来判断是否是主控制器
        let isMainVC = n.object as! Bool
        window?.rootViewController = isMainVC ? MainTabBarController() :WelcomeViewController()
    }

    func setupNetWork() {
        // 设置网络指示器
        AFNetworkActivityIndicatorManager.sharedManager().enabled = true
        
        // 设置网络缓存
        let urlCache = NSURLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024, diskPath: nil)
        NSURLCache.setSharedURLCache(urlCache)
    }
}

